"""
从上述例子我们可以看到，except 是不管 try的代码发生什么异常，都会触发这个关键字

但是我们更多的时候，只要捕获 特定的异常

这是为什么？因为我们要让程序变得更加可控。

打个比方，你使用 except 捕获到了一种异常，并将其处理。

但是在未来的某一天，你的程序又发生了另一种异常，但是由于你使用了 except，你会将这另一种异常当作之前的异常来看待

但实际上它们两造成的影响/结果都有可能大大的不同。
"""

#
# def maybeError(valueDict):
#     try:
#         print(f"你传入的字典没有问题，岁数：{int(valueDict['age'])}")
#     except:
#         print(f"你传入的字典中的岁数不太对啊，不是个正常的字符串数字 {valueDict}")
#
#
# print("first execute:")
# maybeError({'age': '1b'})  # v1.0
# print("\nsecond execute:")
# maybeError({})  # v2.0
#
# # 结果
# """
# first execute:
# 你传入的字典中的岁数不太对啊，不是个正常的字符串数字 {'age': '1b'}
#
# second execute:
# 你传入的字典中的岁数不太对啊，不是个正常的字符串数字 {}
# """

def maybeError(valueDict):
    try:
        print(f"你传入的字典没有问题，岁数：{int(valueDict['age'])}")
    except ValueError:
        print(f"你传入的字典中的岁数不太对啊，不是个正常的字符串数字 {valueDict}")
    except KeyError:
        print(f"你传入的字典中没有 岁数 字段 {valueDict}")
    except:
        print(f"程序发生了未知异常")


print("first execute:")
maybeError({'age': '1b'})
print("\nsecond execute:")
maybeError({})